【macOSでPowerShell Core】キーバインドをカスタマイズする
はじめに
コンサルティング部の川原です。
以前 macOSに PowerShell Core 6.2を入れました。 (記事)
今回は PowerShell Core の PSReadLine を使って キーバインドをカスタマイズします。
検証環境は下記のとおりです
- OS: macOS Mojave, version 10.14.5
- PSVersion: 6.2.1
PSReadLine とは
PSReadLine はコマンドラインの編集環境をカスタマイズするためのモジュールです。 PowerShell v6 には PSReadLine v2.0 が同梱されています。
関連する主なコマンドレットは下記の 2種類です。
- Get/Set-PSReadLineOption: オプション設定の表示/設定
- Get/Set-PSReadLineKeyHandler: キーバインドの表示/設定
Get/Set-PSReadLineOption (オプション設定)
Get-PSReadLineOption
で現在のオプション設定を表示できます。
表示されている各設定項目は Set-PSReadLineOption
で変更できます。
詳細は Microsoft: Set-PSReadLineOption を参照ください。
キーバインドに影響するのは -EditMode
パラメータです。
Windows
, Emacs
, Vi
の 3値から選択します。
# キーバインドを PowerShell/cmd 風に変更 Set-PSReadLineOption -EditMode Windows # キーバインドを Emacs 風に変更 Set-PSReadLineOption -EditMode Emacs # キーバインドを Vi 風に変更 Set-PSReadLineOption -EditMode Vi
Get/Set-PSReadLineKeyHandler (キーバインド設定)
Get-PSReadLineKeyHandler
で現在のキーバインド設定を表示できます。
Set-PSReadLineKeyHandler
でキーバインド設定を変更できます。
詳細は Microsoft: Set-PSReadLineKeyHandler を参照ください。
設定例
Set-PSReadLineOption
まず 編集モード (Windows
, Emacs
, Vi
) を設定します。
今回は Emacs
を選択します。
# 編集モードを Emacsとする Set-PSReadLineOption -EditMode Emacs
Set-PSReadLineKeyHandler
編集モードを決定した後、いろいろとキーバインドを試してみます。
変更したいキーバインドがあれば Set-PSReadLineKeyHandler
で変更します。
私は下記変更を行いました。
# "Ctrl+d" を "DeleteChar"とする Set-PSReadLineKeyHandler -Chord Ctrl+d -Function DeleteChar
Emacs
編集モード の Ctrl+d
はデフォルトで DeleteCharOrExit
です。
通常時は Delete の機能ですが、空行の状態で Ctrl+d
を実行すると PowerShellプロセスが終了します。
誤爆で PowerShellプロセス終了することが何度かあったので、 DeleteChar
に変更しました。
$PROFILE
に保存
最後に PowerShell起動時に設定が反映されるように $PROFILE
にこれまでの内容を記します。
# 編集モードを Emacsとする Set-PSReadLineOption -EditMode Emacs # "Ctrl+d" を "DeleteChar"とする Set-PSReadLineKeyHandler -Chord Ctrl+d -Function DeleteChar
まとめ
以上、PSReadLine を使ったキーバインド設定でした。
PSReadLineは他にも プロンプトテキストの変更や、変数名・エラーメッセージなどの 文字色も変更することができます。 活用して自分好みのコンソール環境にしてみてはいかがでしょうか。